package com.atguigu.java2;

import org.junit.Test;

/**
 *      包装类的使用：
 *          1.java提供了8种基本数据类型对应的包装类，使得基本数据类型的变量具有类的特征
 *
 *          2.掌握的：基本数据类型、包装类，String三者之间的相互转换
 *
 *
 *
 *
 *
 *
 *
 * @author : leimingchao
 * @date Date : 2021年08月28日 0:23
 */
public class WrapperTest {

    /**
     * String类型------->基本数据类型、包装类：调用包装类中的parseXxx(String s)
     */
    @Test
    public void test5() {

        String str1 = "123";

        //错误的情况
        // int num1 = (int)str1;
        //Integer integer = (Integer)str1;

        //可能会报NumberFormatException
        int num2 = Integer.parseInt(str1);
        System.out.println(num2 + 1);

        String str2 = "true1";
        boolean b1 = Boolean.parseBoolean(str2);
        System.out.println(b1);
    }

    /**
     * 基本数据类型、包装类------->String类型：调用String重载的valueOf(Xxxx xxxx)
     */
    @Test
    public void test4() {

        int num1 = 10;
        //方式一：连接运算
        String str1 = num1 + "";
        //方式二：调用String.valueOf()
        float f1 = 12.3f;
        String str2 = String.valueOf(f1);
        System.out.println(str2);


        Double d1 = new Double(12.4);
        String str3 = String.valueOf(d1);
        System.out.println(str3);
    }

    /**
     * JDK5.0新特性：自动装箱和自动拆箱
     */
    @Test
    public void test3() {
        // int num1 = 10;
        //基本数据类型----->包装类的对象
        // method(num1);
        //自动装箱：
        int num2 = 10;
        //自动装箱：基本数据类型----->包装类的对象
        Integer integer = num2;


        boolean b1 = true;
        //自动装箱
        Boolean b2 = b1;

        //自动拆箱：包装类----->基本数据类型
        System.out.println(integer);
        //自动拆箱
        int num3 = integer;


    }


    public void method(Object object) {
        System.out.println(object);
    }

    /**
     * 包装类----->基本数据类型：调用包装类的xxxValue()
     */
    @Test
    public void test2() {

        Integer integer = new Integer(12);
        int intValue = integer.intValue();
        System.out.println(intValue + 1);


        Float f1 = new Float(12.3f);
        float v = f1.floatValue();
        System.out.println(v + 1);
    }

    /**
     * 基本数据类型----->包装类：调用包装类的构造器
     */
    @Test
    public void test1() {
        int num1 = 10;
        // System.out.println(num1.toString());
        Integer integer = new Integer(num1);
        System.out.println(integer.toString());

        Integer integer2 = new Integer("123");
        System.out.println(integer2);

        //NumberFormatException
        // Integer integer3 = new Integer("123abc");
        // System.out.println(integer2);

        Float f1 = new Float(12.3f);
        Float f2 = new Float("12.3");
        System.out.println(f1);
        System.out.println(f2);



        Boolean b1 = new Boolean(true);
        Boolean b2 = new Boolean("True");
        System.out.println(b2);

        //false
        Boolean b3 = new Boolean("true123");
        System.out.println(b3);

        Order order = new Order();
        System.out.println(order.isMale);

        System.out.println(order.isFemale);
    }
}

class Order {
    boolean isMale;

    Boolean isFemale;
}
